Szereg Fouriera – szereg pozwalający rozłożyć funkcję okresową[1] lub nieokresową[2], spełniającą warunki Dirichleta, na sumę funkcji trygonometrycznych. Szeregi Fouriera zostały wprowadzone w 1807 roku przez Josepha Fouriera w celu rozwiązania równania przewodnictwa ciepła dla metalowej płyty. Równanie to jest równaniem różniczkowym cząstkowym i nie da się go rozwiązać bezpośrednio dla większości funkcji; jednak rozkładając funkcję początkową na szereg Fourier łatwo znalazł rozwiązania równania przewodnictwa dla poszczególnych składowych harmonicznych, ponieważ pochodne funkcji trygonometrycznych dają proste wzory, a następnie obliczył rozwiązanie dla funkcji wejściowej, sumując rozwiązania dla jej składowych harmonicznych. W 1829 r. Dirichlet określił ściśle warunki, jakie muszą spełniać funkcje, by szereg Fouriera był do nich zbieżny.
Szeregi Fouriera są np. ściśle powiązane z transformatą Fouriera, odkrytą przez Fouriera, którą można wykorzystać do znalezienia informacji o częstotliwościach składowych funkcji nieokresowych.
Od czasów Fouriera odkryto wiele różnych podejść do definiowania i rozumienia szeregu Fouriera. Niektóre z bardziej wydajnych i eleganckich podejść opierają się na pomysłach i narzędziach matematycznych, które nie były dostępne w czasach Fouriera. Fourier pierwotnie zdefiniował szereg Fouriera dla funkcji argumentów rzeczywistych o wartościach rzeczywistych i użył funkcji sinus i cosinus w dekompozycji. Od tego czasu zdefiniowano wiele innych transformacji, rozszerzając jego początkowy pomysł na wiele zastosowań i tworząc dział matematyki zwany analizą Fourierowską.
Metoda Fouriera doprowadziła do przewrotu w matematyce i zainicjowała powstanie wielu nowych teorii. Dziś szeregi Fouriera mają wielkie znaczenie między innymi w fizyce, teorii drgań oraz przetwarzaniu sygnałów obrazu (kompresja jpeg) i dźwięku (kompresja mp3)[3].
Powyższe wzory po raz pierwszy opublikował Jeana-Baptiste Joseph Fourier. Niemniej jednak po raz pierwszy wyprowadził je Leonhard Euler (prac na ten temat nie opublikował). Wzory te noszą nazwę wzorów Eulera-Fouriera[4].
Wprowadzając dla uproszczenia oznaczenie w powyższych wzorach, gdzie to tzw. pulsacja lub częstość kołowa, otrzymamy:
Obliczając jej współczynniki szeregu Fouriera otrzymamy:
i ostatecznie
Można pokazać, że szereg Fouriera zbiega do funkcji we wszystkich punktach , w których funkcja jest ciągła, tj.
Dla (i ogólnie dla ) szereg Fouriera zbiega do wartości 0. Wartość ta jest równa połowie sumy wartości granic lewo- i prawostronnych funkcji w punkcie . W punkcie funkcja nie została zdefiniowana. Jeżeli więc chcielibyśmy, by szereg był zbieżny do funkcji w tym punkcie (i ogólnie dla ), to należałoby uzupełnić jej definicję przyjmując:
Wniosek ten jest zawarty w twierdzeniu Dirichleta, które orzeka, iż[5]
Jeżeli funkcja jest w przedziale ograniczona i ciągła lub posiada nieciągłości najwyższej 1-go rodzaju (tj. spełniające warunek: w punkcie nieciągłości istnieją granice funkcji lewo- i prawostronna) i w skończonej liczbie, to (1) szereg Fouriera zbiega do funkcji w punktach ciągłości (2) w punktach nieciągłości szereg zbiega do wartości równej połowie sumy granic lewo- i prawostronnej funkcji w tych punktach.
Uwaga 1: Z powyższego przykładu widać, że funkcja rozwijana w szereg Fouriera może nie być zdefiniowanaw punktach nieciągłości 1-go rodzaju - brak wartości funkcji w tych punktach nie przeszkadza w obliczaniu współczynników Fouriera ani nie ma wpływu na ich wartość (bowiem wartości całek nie zależą od wartości funkcji na zbiorze miary zero, a takiej miary jest zbiór punktów nieciągłości funkcji).
Funkcję nieokresową, określoną dla można rozwinąć w szereg Fouriera, obliczając współczynnika Fouriera jak dla funkcji okresowej o okresie . Szereg Fouriera jest zawsze funkcją okresową, nawet jeśli oryginalna funkcja nią nie jest. Jednak ograniczając się do wartości szeregu dla otrzymamy rozkład oryginalnej funkcji na szereg Fouriera.
Funkcja musi przy tym spełniać na przedziale zmienności te same warunki ograniczoności i ciągłości, co funkcja okresowa na przedziale .
Uwaga:
Jeżeli funkcja jest okresowa, to rozwinięcia w szereg Fouriera można dokonać na dowolnym przedziale , gdzie - dowolne przesunięcie powyższego zakresu; np. dla . Wtedy wystarczy obliczać całki na współczynniki rozwinięcia w innym zakresie.[1] Analogicznie dotyczy to rozwinięć funkcji nieokresowych na innych przedziałach zmienności zmiennej
Dokładność aproksymacji funkcji szeregiem Fouriera. Efekt Gibbsa
Powyższe twierdzenie orzeka, iż spośród wszystkich funkcji, przybliżających daną funkcję za pomocą skończonej kombinacji liniowej funkcji sinusoidalnych i kosinusoidalnych najmniejszy średni błąd kwadratowy uzyska się dla współczynników będących współczynnikami rozwinięcia danej funkcji w szereg Fouriera. Dla ilustracji pokazano tu przybliżenia funkcji (opisującej kat odchylania wahadła matematycznego od pionu) za pomocą dwóch funkcji o identycznych składowych harmonicznych, ale o różnych współczynnikach
(a) przybliżenie sumą częściową szeregu Fouriera funkcji
,
(b) przybliżenie funkcją , która jest rozwiązaniem przybliżenia równania nieliniowego ruchu wahadła za pomocą rozwinięcia w szereg Maclaurina członu nieliniowego tego równania:
gdzie:
- amplituda drgań wahadła,
, gdzie - okres drgań wahadła, słuszny dla dowolnych amplitud,
Z obliczeń średniego błędu kwadratowego otrzymano:
(a) dla :
(a) dla :
Zwiększenie liczby wyrazów w liczeniu sumy częściowej Fouriera zmniejsza średni błąd kwadratowy; dla otrzymuje się . Widać stąd, iż analiza Fouriera stanowi skuteczne narzędzie znajdowania znakomitych aproksymacji rozwiązań równań różniczkowych.
Cztery sumy częściowe szeregu Fouriera zawierające 1, 2, 3 i 4 wyrazy, pokazujące, jak poprawia się przybliżenie funkcji prostokątnej ze wzrostem liczby wyrazów (tu dokładna animacja)
Cztery sumy częściowe szeregu Fouriera zawierające 1, 2, 3 i 4 wyrazy, pokazujące, jak poprawia się przybliżenie funkcji piłokształtnej ze wzrostem liczby wyrazów (tu dokładna animacja)
Zależność aproksymacji od liczby wyrazów sumy aproksymującej
Dokładność aproksymacji danej funkcji za pomocą szeregu Fouriera zależy od liczby wyrazów N szeregu - im więcej wyrazów sumy częściowej, tym mniejszy jest średni błąd kwadratowy. Pokazują to poniższe animacje.
Dla funkcji nieciągłych pojawia się tzw. efekt Gibbsa w aproksymacji - w punktach nieciągłości (odcinki skoków pionowych) następują silne odchylenia funkcji aproksymującej od wartości średniej, pomimo że maleje średni błąd kwadratowy aproksymacji danej funkcji za pomocą sum częściowych szeregu Fouriera wraz ze wzrostem liczby wyrazów sumy aproksymującej. W związku z tym stosuje się różne techniki wygładzania lokalnego funkcji aproksymującej w pobliży punktów nieciągłości.
Współczynniki szeregu Fouriera reprezentują amplitudy składowych harmonicznych , jakie zawiera dany sygnał. Zbiór tych współczynników nazywa się widmem danej funkcji.
Animacja obok pokazuje widmo funkcji, która ma jedynie składowe sinusoidalne widma.
Poniżej podano kod programu w języku Python, który dla danej funkcji liczy współczynniki szeregu Fouriera , oblicza funkcję aproksymującą funkcję wyjściową, rysuje funkcję daną i aproksymującą oraz rysuje widmo składowych harmonicznych, którego wartości są równe wartościom składowych szeregu Fouriera.
Użytkownik może ustalić:
Parametr określający zakres , na którym jest zdefiniowana funkcja, taki że (linia 9 kodu)
Liczbę wyrazów funkcji aproksymującej (linia nr 10)
Definicję funkcji (linia nr 14)
Program można testować, korzystając np. z darmowego notatnikacolab google online.
# JK 2024.08.16 v.1 Program oblicza współczynniki szeregu Fouriera danej funkcji,# rysuje wykres funkcji i funkcji aproksymujacej, rysuje wykres widmaimportnumpyasnpimportmatplotlib.pyplotaspltfromscipy.integrateimportquad# ParametryL=np.pi# Okres (od -L do L)N=10# Liczba wyrazów w szeregu Fouriera# Definicja funkcji f(x) = xdeff(x):returnx*x-0.5*x**3# Współczynniki a_n i b_na0=(1/L)*quad(f,-L,L)[0]defa_n(n):integrand=lambdax:f(x)*np.cos(n*np.pi*x/L)result,_=quad(integrand,-L,L)returnresult/Ldefb_n(n):integrand=lambdax:f(x)*np.sin(n*np.pi*x/L)result,_=quad(integrand,-L,L)returnresult/L# Funkcja rekonstrukcji z szeregu Fourieradeffourier_series(x,N):a0_term=a0/2sum_terms=sum(a_n(n)*np.cos(n*np.pi*x/L)+b_n(n)*np.sin(n*np.pi*x/L)forninrange(1,N+1))returna0_term+sum_terms# Zakres x dla wykresux_values=np.linspace(-L,L,500)f_values=f(x_values)fs_values=[fourier_series(x,N)forxinx_values]# Obliczanie współczynników dla widman_values=np.arange(1,N+1)a_n_values=np.array([a_n(n)forninn_values])b_n_values=np.array([b_n(n)forninn_values])# Wykres funkcji i szeregu Fourieraplt.figure(figsize=(14,6))# Wykres funkcji i szeregu Fourieraplt.subplot(1,2,1)plt.plot(x_values,f_values,label="f(x) = x*x-0.5*x**3",color="blue")plt.plot(x_values,fs_values,label=f"Szereg Fouriera, N = {N}",color="red",linestyle="--")plt.title("Funkcja f(x) i jej szereg Fouriera")plt.xlabel("x")plt.ylabel("f(x)")plt.legend()plt.grid(True)# Wykres widma Fourieraplt.subplot(1,2,2)plt.stem(n_values,np.abs(a_n_values),linefmt='b-',markerfmt='bo',basefmt='b-',label='a_n')plt.stem(n_values,np.abs(b_n_values),linefmt='r-',markerfmt='ro',basefmt='r-',label='b_n')plt.title("Widmo Fouriera")plt.xlabel("n")plt.ylabel("Amplituda")plt.legend()plt.grid(True)plt.tight_layout()plt.show()
Twierdzenia o rozwinięciu funkcji w szereg Fouriera
Podane tu dwa zasadnicze twierdzenia dotyczą warunków rozwinięcia za pomocą szeregu Fouriera funkcji okresowej. Zakładamy, że funkcja ma okres i pulsację Twierdzenia poprzedzone są lematami, potrzebnymi do ich dowodów.
Mnożąc powyższą równość przez całkując szereg w granicach od do (uwzględniając zbieżność jednostajną szeregu stosujemy twierdzenie o całkowaniu szeregu wyraz po wyrazie) otrzymujemy:
Na mocy lematu I zerują się wszystkie całki po prawej stronie takie że (gdy zeruje się cała suma uogólniona). W związku z tym mamy:
Uwaga: W poniższych rozważaniach przyjęto, iż szereg Fouriera jest funkcją o okresie . W przypadku wszystkie własności pozostają nadal prawdziwe, gdyż wystarczy przeskalować daną funkcję do funkcji o okresie .
Przestrzeń funkcyjna z tak zdefiniowanym iloczynem skalarnym jest nazywana przestrzenią Hilberta. Każdą funkcję tej przestrzeni można rozłożyć w jej bazie ortonormalnej w postaci szeregu
Powyższy szereg przedstawia de facto szereg Fouriera funkcji w jego zespolonym sformułowaniu, gdzie zamiast funkcji bazowych oraz mamy funkcje zespolone .
Baza ortogonalna z funkcji sin i cos szeregu Fouriera
Jako bazę ortogonalną w przestrzeni funkcji całkowalnych w kwadracie na przedziale można także wybrać funkcję stałą oraz funkcje , dla Analogicznie więc, jak dla bazy zespolonej, także szereg Fouriera z funkcjami sinus oraz cosinus przedstawia rozkład danej funkcji w bazie przestrzeni Hilberta.
Ortogonalność funkcji oraz wraz z funkcją stałą wynika z poniższych całek:
Tabela zestawia operacje matematyczne wykonywane na danych funkcjach i wpływ tych operacji na współczynniki szeregów Fouriera oraz wpływ operacji wykonywanych na współczynnikach Fouriera i ich wpływ na dane funkcje. Notacja:
I. N. Bronsztejn, K. A. Siemiendiajew, Poradnik encyklopedyczny Matematyka, PWN, Warszawa 2019, str. 637-647.
Barbara Piłat, Mariusz. J. Wasilewski, Tablice całek, Wydawnictwo Naukowo-Techniczne, Warszawa 1985, s. 83-89 Współczynniki szeregów Fouriera wybranych funkcji. ISBN ISBN 978-83-20-40-525-5
Tadeusz Trajdos, Matematyka dla inżynierów, PWN, Warszawa 1974, str. 534-544.
Hans Niels Jahnke: A history of analysis. Providence, RI: American Mathematical Society, 2003. ISBN 0-8218-2623-9. OCLC51607350.